package com.whp.yky.yky.controller;


import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GetObjectRequest;
import com.whp.yky.yky.utils.OssUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;


import java.io.File;
import java.util.HashMap;
import java.util.Map;

@CrossOrigin
@RestController
@RequestMapping("/oss")
public class OssController {

    @Autowired
    OssUtil ossUtil;  //注入OssUtil

    @PostMapping("/uploadfile")
    public Object fileUpload(@RequestParam("file") MultipartFile file)
    {
        try {
            String url = ossUtil.uploadFile(file); //调用OSS工具类
            Map<String, Object> returnbody = new HashMap<>();
            Map<String, Object> returnMap = new HashMap<>();
            String fileName = file.getOriginalFilename();
            returnMap.put("url", url);
            returnbody.put("data",returnMap);
            returnbody.put("fileName",fileName);
            returnbody.put("code","200");
            returnbody.put("message","上传成功");

            return returnbody;
        }
        catch (Exception e) {
            Map<String, Object> returnbody = new HashMap<>();
            returnbody.put("data",null);
            returnbody.put("code","400");
            returnbody.put("message","上传失败");
            return  returnbody;
        }
    }

    @RequestMapping("/download/{path}")
    public void download(@PathVariable(value = "path") String path){
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。

        System.out.println(path);
        String endpoint = "https://oss-cn-beijing.aliyuncs.com";
// 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        String accessKeyId = "LTAI4GHxXfPnnwxQsmdeu2eb";
        String accessKeySecret = "bGBULdhrBuv0osQItdgnil1P9P5344";
// 填写Bucket名称。
        String bucketName = "whppro";
// 填写不包含Bucket名称在内的Object完整路径，例如testfolder/exampleobject.txt。
        String objectName ="test/" + path;
        System.out.println(objectName);


// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 下载Object到本地文件，并保存到指定的本地路径中。如果指定的本地文件存在会覆盖，不存在则新建。
// 如果未指定本地路径，则下载后的文件默认保存到示例程序所属项目对应本地路径中。
        ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File("D:\\"+path));

// 关闭OSSClient。
        ossClient.shutdown();

    }


}